package com.koicarp.agent.example;

import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.ollama.OllamaChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;

import java.time.Duration;

/**
 * @Author: liuxia
 * @CreateTime: 2025/9/13 下午10:10
 * @Description: 大模型初始化
 */
public class ChatModelInit {

    static String OLLAMA_MODEL_NAME = "deepseek-r1:7b";            // 填入你刚刚下载的模型

    static String OLLAMA_MODEL_QWEN_VL = "qwen2.5vl:7b";           // qwen2.5 视觉模型

    static String OLLAMA_BASE_URL = "http://localhost:11434";      // ollama启动后的ip:port

    static String OPEN_AI_MODEL_NAME = "模型名称";

    static String OPEN_AI_BASE_URL = "供应商的ip:port";

    static String OPEN_AI_AIP_KEY = "供应商的api-key";

    public static ChatModel initOllama() {
        return OllamaChatModel.builder()
                .baseUrl(OLLAMA_BASE_URL)
                .modelName(OLLAMA_MODEL_NAME)
                .think(true)                            // 是否深度思考
                .returnThinking(true)                   // 是否返回思考过程
                .timeout(Duration.ofMinutes(10))        // 超时时间
                .build();
    }

    public static ChatModel initOllamaQwen() {
        return OllamaChatModel.builder()
                .baseUrl(OLLAMA_BASE_URL)
                .modelName("qwen2:7b")
//                .think(true)                            // 不支持深度思考
//                .returnThinking(true)                   // 不支持是否返回思考过程
                .timeout(Duration.ofMinutes(10))        // 超时时间
                .build();
    }

    public static ChatModel initOllamaQwenVL() {
        return OllamaChatModel.builder()
                .baseUrl(OLLAMA_BASE_URL)
                .modelName(OLLAMA_MODEL_QWEN_VL)
//                .think(true)
//                .returnThinking(true)
                .timeout(Duration.ofMinutes(10))
                .build();
    }

    public static ChatModel initOpenAi() {
        return OpenAiChatModel.builder()
                .baseUrl(OPEN_AI_BASE_URL)
                .modelName(OPEN_AI_MODEL_NAME)
                .apiKey(OPEN_AI_AIP_KEY)
                .returnThinking(true)
                .timeout(Duration.ofMinutes(10))
                .build();
    }
}
